package Controleur;

import java.io.*;
import org.jdom2.*;
import org.jdom2.input.*;
import org.jdom2.filter.*;
import java.util.List;
import java.util.Iterator;
import java.util.*;
import Modele.*;

public class JDOM2 {

    static org.jdom2.Document document;
    static Element racine;
    static Element reponse;
    static QCMModele qcm;
    static Map<String, Boolean> reponses = new HashMap();
    static String enonce;

    public JDOM2(String filepath) {
        //On crée une instance de SAXBuilder
    
        SAXBuilder sxb = new SAXBuilder();
        try {
            //On crée un nouveau document JDOM avec en argument le fichier XML
            //Le parsing est terminé ;)
            
                System.out.println(filepath);
                FileOutputStream fichier = new FileOutputStream("test.xml", false);
                fichier.write(filepath.getBytes());
                fichier.flush();
                fichier.close();
                
            
                
            
    
            try {

                        File file = new File("test.xml");
                        document = sxb.build(file);
                    if (file.delete()) {
                        System.out.println(file.getName() + " is deleted!");
                    } else {
                        System.out.println("Delete operation is failed.");
                    }

                } catch (Exception e) {

                    e.printStackTrace();

                }
            
            //qcm = new QCMModele(filepath);
            
        } catch (Exception e) {
        }

        //On initialise un nouvel élément racine avec l'élément racine du document.
     
      
        
        racine = document.getRootElement();
        afficheEnonce();
        //Méthode définie dans la partie 3.2. de cet article
        afficheALL();

    }
    
    static void afficheEnonce() {
        List listEnonce = racine.getChildren("enonce");

        Iterator it = listEnonce.iterator();

        while (it.hasNext()) {
            Element enonce2 = (Element) it.next();
            System.out.println(enonce2.getText());
            //   String s = enonce.getText();
            enonce = enonce2.getText();
            //     System.out.println("enonce : " + JDOM2.enonce);
        }
    }
    //Ajouter cette méthodes à la classe JDOM2

    static void afficheALL() {
        
        reponses = new HashMap();


        //On crée une List contenant tous les noeuds "etudiant" de l'Element racine
        List listReponse = racine.getChildren("reponse");
        System.out.println(listReponse);
        //On crée un Iterator sur notre liste
        Iterator i = listReponse.iterator();
        while (i.hasNext()) {
            //On recrée l'Element courant à chaque tour de boucle afin de
            //pouvoir utiliser les méthodes propres aux Element comme :
            //sélectionner un nœud fils, modifier du texte, etc...
            Element courant = (Element) i.next();

            System.out.println("creation du qcm ");

            

            //    System.out.println("econcé du qcm : " + qcm.getEnonce());
            System.out.println("add reponse");
            System.out.println("reponse envoyée : " + courant.getText());

            if (courant.getAttribute("classe") != null) {
                reponse = courant;

                   System.out.println("put reponse vraie");
                reponses.put(courant.getText(), true);


            } else {
                System.out.println("put reponse fausse");
                reponses.put(courant.getText(), false);

            }
            
                //qcm.setReponses(reponses);
            
                //System.out.println("map reponse : " + qcm.getReponses());

            //    System.out.println("rep");

            System.out.println("reponses jdom : " +reponses);
            //On affiche le nom de l’élément courant
            //   System.out.println(courant.getText());
        }
    }

    /*public static QCMModele getQcm() {
        return qcm;
    }*/

    public static String getEnonce() {
        return enonce;
    }

    public static Map<String, Boolean> getReponses() {
        return reponses;
    }
    
    
    
    
}